package com.sky.controller.test1;

public class Test11 {
    public static void main(String[] args) {
        //lambda只能替代函数式接口的内部类
        //函数式接口是有且仅有一个抽象方法的接口
        //lambda:参数类型可以不写,一个参数可以省略小括号,只有一行可以省略大括号和分号,如果是return语句,需要省略return
        Hobby hobby = () -> {
            System.out.println(111);
        };//接口实现
        hobby.play();//调用
        //方法引用简化lambda
        //1.静态方法引用:类名::静态方法,调用静态方法,并且->前后的参数一致
        // Animal animal = new Animal();
        //2.实例方法引用:animal::实例方法,调用实例方法,并且->前后参数一致
        //3.特定类型的方法引用,Arrays.sort(names,String::compareToIgnoreCase),第一个参数作为方法的主调,后面所有的参数都作为实例的入参
        //4.构造器引用 类名::new,只是在创建对象,并且->前后参数一致,name->new Car(name)
    }
}

abstract class Hobby1 {
    abstract void play();
}

@FunctionalInterface
interface Hobby {
    void play();
}
